package com.tedu.api;

import org.junit.Test;

public class StingBuilderAPI {
    /**
     * 字符串大量拼接：注意String造成内存溢出
     */
    @Test
    public void testString(){
        String str="字符串";
        for(int i=0;i<10;i++){
            str+=i; //字符串1 2 3 4...
            System.out.println("str");

        }
    }
    /**
     * String-------不可改变对象  BUG（常量池）
     * 假设：拼接出10000000w个String---内存【开销过大】
     * 操作系统发现内存空间越来越小，会去硬盘上开辟空间----程序、电脑会卡
     *
     * 解决方案：不创建新对象，原来对象实现拼接【添加、替换、插入】
     * StringBuilder对象  可变字符串对象
     * 语法：StringBuilder sb=new StringBuilder（“字符串”）；
     *
     * C语言      变量
     * Java语言   变量  int a=malloc（4）； 内存开辟a空火箭，保存1.JVM虚拟机提供GC功能
     *                 a=1;
     *                 free(a);  清理内存
     *                 不会存在内存溢出
     * Java语言   变量  int a=1 内存开辟a空间，保存1.JVM虚拟机
     *
     *
     */
    @Test
    public void testSB(){
        //创建可变的字符串对象【解释String大量拼接，造成内存溢出】
        String str="你就是我的";
       StringBuilder sb=new StringBuilder(str);
       //append方法 添加新字符串，等同于加号【拼接】
        sb.append("小可爱~");
        System.out.println(sb);
    }
}
